Dynamic notification engine for notification throttling based on contextual analysis

ABSTRACT

The present application involves systems, software, and computer-implemented methods for modifying triggered notifications associated with particular user profiles based on an analysis of a context of the user profile. One example system performs operations including identifying at least one satisfied notification rule for triggering notifications to a user device associated with at least one particular user profile. For each particular user profile, operations include accessing the particular user profile to identify at least one user-specific contextual rule corresponding to the at least one notification modification rules and identifying a current user context associated with the particular user profile. In response to the current user context satisfying the user-specific contextual rule, the triggered notification for the particular user profile can be modified based on the satisfied user-specific contextual rule. If the context does not satisfy the rule, the triggered notification can be transmitted to a user device associated with user profile.

TECHNICAL FIELD

The present disclosure relates to computer-implemented methods,software, and systems for modifying triggered notifications associatedwith particular user profiles based on an analysis of contexts specificto the user profile and/or related user profiles.

BACKGROUND

Location-based services can be used to enhance mobile applications. Forexample, information presented by an application or processing performedby an application can be based on or influenced by the location of amobile device. As a specific example, advertising presented in anapplication can be based on a mobile device's location, as well as otherenvironmental factors. For example, an advertisement for anestablishment can be presented via a mobile application in response to adetection that the mobile device is within a threshold radius of theestablishment. When users at a particular location or area share commonenvironmental and/or contextual contexts or statuses, multiple users maytrigger the advertisement.

To determine the location of a particular device, a backend server ormobile application may trigger a request for the current location of theparticular device. The request may be in response to a standard locationtracking or location association operation, or in response to an event.Additional information associated with the device and/or the userassociated with the device can be used to provide further context.

Particular notifications (e.g., push notifications) may be associatedwith a particular application installed on a mobile device of a user, aparticular service provider providing data or phone service to themobile device, or can otherwise be associated with an external provideror system capable of accessing recent and/or current information aboutthe context of the mobile device.

SUMMARY

The present disclosure involves systems, software, and computerimplemented methods for modifying triggered notifications associatedwith particular user profiles based on an analysis of contexts specificto the user profile and/or related user profiles. A first example systemincludes a communications module, at least one memory storinginstructions, a plurality of user profiles, a repository of notificationrules, and a repository of notification modification rules, and at leastone hardware processor interoperably coupled with the at least onememory and the communications module. Each user profile is associatedwith a user device, and the repository of notification rules includes atleast one rule set identifying events for triggering notifications touser devices associated with particular ones of the user profiles basedon a set of notification requirements. The notification modificationrules can identify contextual determinations associated with theparticular ones of the user profiles related to the triggerednotification, where those rules identify a particular modification tothe triggered notification prior to transmission of the triggerednotification. At least one notification modification rule identifiesmodifications to triggered notifications based on a userprofile-specific contextual rule. The instructions stored in memoryinstruct the at least one hardware processor to perform variousoperations, including, identifying at least one satisfied notificationrule for triggering notifications to a user device associated with atleast one particular user profile. For each of the at least oneparticular user profiles, the instructions cause the processor to accessthe particular user profile to identify at least one user-specificcontextual rule corresponding to the at least one notificationmodification rules and identify a current user context associated withthe particular user profile. In response to determining that theidentified current user context associated with the particular userprofile satisfies the at least one user-specific contextual rule beforethe notification is transmitted, the instructions instruct the processorto modify the triggered notification for the particular user profilebased on the particular modification associated with the satisfied atleast one user-specific contextual rule. In response to determining thatthe identified current user context associated with the particular userprofile does not satisfy the at least one user-specific contextual rule,the instructions cause the process to transmit, via the communicationsmodule, a first signal to the user device associated with the particularuser profile, the first signal including the triggered notification.

Implementations can optionally include one or more of the followingfeatures.

In some instances, modifying the triggered notification for theparticular user profile comprises cancelling the triggered notificationprior to transmission. In other instances, modifying the triggerednotification for the particular user profile comprises modifyingcontents of the triggered notification prior to transmitting thetriggered notification.

In some instances, the instructions further instruct the at least onehardware processor to transmit, via the communications module, a secondsignal to the user device associated with the particular user profile,the second signal including the modified notification in response tomodifying the triggered notification for the particular user profile.

In some instances, the user-specific contextual rule set includes atleast one location-specific rule, wherein the user-specific contextualrule is satisfied when the user device associated with the user profileis determined to be at a location associated with the at least onelocation-specific rule. In those instances, modifying the triggerednotification for the particular user profile can comprise delayingtransmission of the triggered notification until the user deviceassociated with the user profile is determined to be at a location notincluding the locations associated with the at least onelocation-specific rule. In other instances, modifying the triggerednotification for the particular user profile can comprise cancelling thetriggered notification without transmission in response to determiningthat the user device associated with the user profile to be a locationassociated with the at least one location-specific rule.

In some instances, the user-specific contextual rule set includes atleast one time-specific rule defining a time in which the user profileis not to receive notification, where the at least one time-specificrule is satisfied when the triggered notification is triggered at a timecorresponding to a particular time or time range associated with thetime-specific rule associated with the user-specific contextual ruleset.

In some instances, the user-specific contextual rule set includes a ruledefining a maximum number of notifications received over a period oftime. In those instances, determining that the identified current usercontext associated with the particular user profile satisfies the ruleassociated with a number of notification received over a period of timecan comprise analyzing historical data associated with the particularuser profile to determine whether the user device has received a numberof notifications equal to or greater than the maximum number ofnotifications over the period of time. In response to determining thatthe user device has received the number of notifications equal to orgreater than the maximum number of notifications over the defined periodof time, modifying the triggered notification for the particular userprofile can comprise cancelling the triggered notification withouttransmission. In other instances, in response to determining that theuser device has received the number of notifications equal to or greaterthan the maximum number of notifications over the defined period oftime, modifying the triggered notification for the particular userprofile can comprise delaying transmission of the triggered notificationuntil after the defined period of time has expired.

In some instances, identifying the current user context associated withthe particular user profile can comprise receiving, via thecommunications module, a third signal from the user device associatedwith the particular user profile. In other instances, identifying thecurrent user context associated with the particular user profile cancomprise receiving, via the communications module, a third signal froman external source different than the user device, the external sourceproviding information related to the user associated with the particularuser profile.

In some instances, the triggered notification may be a push notificationassociated with a particular application installed on the user deviceassociated with the particular user profile.

In some instances, the user-specific contextual rule set includes a ruleto suppress triggered notifications based on an analysis of atransactional history associated with the particular user profile, wherethe rule is satisfied in response to a determination that the particularuser profile is associated with a transaction within a period of timeprior to a triggering of the triggered notification.

A second example system includes a communications module, at least onememory storing instructions, a plurality of user profiles, a repositoryof notification rules, and a repository of notification modificationrules, and at least one hardware processor interoperably coupled withthe at least one memory and the communications module. Each user profileis associated with a user device, and the repository of notificationrules include at least one rule set identifying events for triggeringnotifications to user devices associated with particular ones of theuser profiles based on a set of notification requirements. Thenotification modification rules are associated with contextualdeterminations related to particular ones of the user profilesassociated with triggered notifications, where the notificationmodification rules identify a particular modification to particulartriggered notifications to be performed prior to transmission of thetriggered notifications. At least one notification modification ruleidentifies modifications to triggered notifications based on a relativeuser context-specific contextual rule. The instructions stored in memoryinstruct the at least one hardware processor to perform variousoperations, including, identifying at least one satisfied notificationrule for triggering a notification to a user device associated with atleast one particular user profile. For each of the at least oneparticular user profiles, the instructions instruct the processor toidentify a current user context associated with the particular userprofile and a set of current user contexts associated with at least oneuser profile different than the particular user profile, where acombination of the identified contexts representing a relative usercontext. In response to determining that the relative user contextsatisfies at least one of the relative user context-specific contextualrules, the instructions instruct the processor to modify the at leastone triggered notification for the particular user profile based on theparticular modification associated with the satisfied at least onerelative user context-specific contextual rule. In response todetermining that the relative user context does not satisfy at least oneof the rules in the relative user context-specific contextual rule set,the instructions instruct the processor to transmit, via thecommunications module, a first signal to the user device associated withthe particular user profile, the first signal including the triggerednotification.

Implementations can optionally include one or more of the followingfeatures.

In some instances, modifying the triggered notification for theparticular user profile comprises cancelling the triggered notificationprior to transmission. In other instances, modifying the triggerednotification for the particular user profile comprises modifyingcontents of the triggered notification for the particular user profileprior to transmitting the triggered notification.

In some instances, the current user context associated with theparticular user profile is associated with a particular location of theuser device associated with the particular user profile, wherein thecurrent user contexts associated with the at least one user profiledifferent than the particular user profile are each associated with acorresponding location. In those instances, at least one relative usercontext-specific contextual rule can comprise performing a modificationof the triggered notification in response to a determination that morethan a threshold number of the user profiles in the relative usercontext are associated with a common location at a time when thetriggered notification is to be transmitted. In some instances, thecommon location comprises a common location relative to the other userprofiles. In some of those instances, the common location relative tothe other user profiles comprises an area of a predetermined size, wherethe at least one relative user context-specific contextual rule issatisfied in response to more than the threshold number of user profilesbeing located within the common location at a time when the triggerednotification is to be transmitted.

In some instances, the common location can comprise a predefinedgeographical area, where the at least one relative user context-specificcontextual rule is satisfied in response to more than the thresholdnumber of user profiles being located within the predefined geographicalarea at a time when the triggered notification is to be transmitted.

In some instance, in response to the relative user context-specificcontextual rule being satisfied, modifying the triggered notificationcomprises identifying a subset of the user profiles associated with thecommon location to receive the triggered notification and, for each ofthe subset of the user profiles to receive the triggered notification,transmitting, via the communications module, a set of second signals tothe user devices associated with each user profile of the subset, eachsecond signal including the triggered notification. For each of the userprofiles not included in the identified subset of the user profiles, thetriggered notification is cancelled prior to transmission.

In some instances, the triggered notification comprises a pushnotification associated with a particular application installed on theuser device associated with the particular user profile.

In some instances, identifying the at least one satisfied notificationrule for triggering the notification to the user devices associated withthe at least one particular user profile comprises identifying a commonnotification rule being satisfied for a plurality of user profiles,where the relative user context identifies the plurality of userprofiles associated with the triggered notification, and where therelative user context-specific contextual rule identifies a maximumnumber of user profiles allowed to receive the triggered notification.In those instances, modifying the triggered notification can compriseidentifying a subset of the plurality of user profiles associated withthe at least one satisfied notification rule, the subset less than orequal to the maximum number of user profiles allowed to receive thetriggered notification, and, for each of the subset of the user profilesto receive the triggered notification, transmitting, via thecommunications module, a set of second signals to the user devicesassociated with each user profile of the subset, each second signalincluding the triggered notification. For each of the user profiles notincluded in the identified subset of the user profiles, the triggerednotification can be cancelled prior to transmission.

A third example system includes a communications module, at least onememory storing instructions, a plurality of user profiles, a repositoryof notification rules, and a repository of notification modificationrules, and at least one hardware processor interoperably coupled withthe at least one memory and the communications module. Each user profileis associated with a user device, and the repository of notificationrules include at least one rule set identifying events for triggeringnotifications to user devices associated with particular ones of theuser profiles based on a set of notification requirements. Thenotification modification rules are associated with contextualdeterminations related to particular ones of the user profilesassociated with triggered notifications, where the notificationmodification rules identify a particular modification to particulartriggered notifications to be performed prior to transmission of thetriggered notifications. At least one notification modification ruleidentifies modifications to triggered notifications based on alocation-specific contextual rule. The instructions stored in memoryinstruct the at least one hardware processor to perform variousoperations, including, identifying at least one satisfied notificationrule for triggering notifications to a user device associated with atleast one particular user profile. For each of the at least oneparticular user profiles, a current user context associated with theparticular user profile is identified, where the current user contextidentifies a particular location associated with the particular userprofile. In response to determining that a particular current locationassociated with the particular user profile satisfies at least onelocation-specific contextual rule before the notification istransmitted, the instructions instruct the processor to modify thetriggered notification for the particular user profile based on theparticular modification associated with the satisfied location-specificcontextual rule. In response to determining that the identified currentuser context associated with the particular user profile does notsatisfy at least one location-specific contextual rule before thenotification is transmitted, the instructions instruct the processor totransmit, via the communications module, a first signal to the userdevice associated with the particular user profile, the first signalincluding the triggered notification.

Implementations can optionally include one or more of the followingfeatures.

In some instances, the particular location associated with theparticular user profile comprises a particular location of the userdevice associated with the particular user profile. In those instances,the particular location of the user device associated with theparticular user profile can comprise a current location of the userdevice at a time at which the at least one notification rule issatisfied. The determination of whether the at least onelocation-specific contextual rule is satisfied can be based on the timeat which the at least one notification rule is satisfied. In otherinstances, the particular location of the user device associated withthe particular user profile can comprise a current location of the userdevice at a time when the triggered notification is to be transmitted,where the determination of whether the at least one location-specificcontextual rule is satisfied is based on the time at which the triggerednotification is to be transmitted. In other instances, the particularlocation of the user device associated with the particular user profilecomprises a location history of the user device, and wherein the atleast one location-specific contextual rule is satisfied based on ananalysis of the location history associated with the user profile.

In some instances, the at least one location-specific contextual rule isassociated with a defined location, where the at least onelocation-specific contextual rule is associated with a specific timerange during which the at least one location-specific contextual rule isvalid. In those instances, in response to determining that theparticular location associated with the particular user profilecorresponds to the defined location at a time outside the specific timerange associated with the at least one location-specific contextualrule, the at least one location-specific contextual rule is notsatisfied. In some instances, the defined location is associated with anevent. In those instances, the instructions instruct the at least onehardware processor to receive, via the communications module, a secondsignal including status information from a data feed associated with theevent, where the status information can be used to determine whether theevent is ongoing. The at least one location-specific rule is thensatisfied when the triggered notification is to be transmitted while theevent is ongoing. In some of these instances, modifying the triggerednotification for the particular user profile can comprise delayingtransmission of the triggered notification to the user device associatedwith the particular profile until after obtaining, via thecommunications module, information from the data feed indicating thatthe event has ended. In other of these instances, modifying thetriggered notification for the particular user profile can comprisedelaying transmission of the triggered notification to the user deviceassociated with the particular profile until after obtaining, via thecommunications module, information from the data feed indicating thatthe event is at an intermission or break. In some instances, the datafeed associated with the event comprises a social media feed.

In some instances, modifying the triggered notification for theparticular user profile comprises delaying transmission of the triggerednotification. In those instances, transmission of the triggerednotification can be delayed until a time when the location of thecurrent user context associated with the particular user profile doesnot satisfy the location-specific contextual rule.

Similar operations and processes may be performed in a system comprisingat least one process and a memory communicatively coupled to the atleast one processor where the memory stores instructions that whenexecuted cause the at least one processor to perform the operations,including where alternative or additional components or operations areperformed and/or included, or where fewer than those components arepresent. Further, a non-transitory computer-readable medium storinginstructions which, when executed, cause at least one processor toperform the operations may also be contemplated. In otherimplementations, the operations can be described and implemented ascomputer implemented software embodied on tangible, non-transitory mediathat processes and transforms the respective data. Some or all of theaspects may be computer implemented methods or further included inrespective systems or other devices for performing this describedfunctionality. The details of these and other aspects and embodiments ofthe present disclosure are set forth in the accompanying drawings andthe description below. Other features, objects, and advantages of thedisclosure will be apparent from the description and drawings, and fromthe claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating an example system for triggeringnotifications associated with one or more user profiles and evaluatingwhether those triggered notifications are to be modified in response toone or more modification rules.

FIG. 2 is an example diagram of a data flow associated with anotification modification analysis.

FIG. 3 is a flowchart of an example method for modifying triggerednotifications based on one or more user-specific contextual rules.

FIG. 4 is a flowchart of an example method for modifying triggerednotifications based on an evaluation of one or more contextual rulesanalyzing a particular user profile relative to at least one other userprofile.

FIG. 5 is a flowchart of an example method for modifying triggerednotifications associated with particular users based on an evaluation ofone or more location-specific contextual rules.

DETAILED DESCRIPTION

Current mobile applications and service providers associated with a userand mobile devices offer various push notifications or othernotifications triggered in response to any number of factors. In someinstances, users may be registered with the mobile application, eitherto enjoy the full functionality of the application, or in order toreceive additional tools or uses of the application. For serviceproviders and advertisers, particular users may register with theprovider/advertiser or be existing customers, such that periodicadvertisements sent via a push notification or via a standard messagingformat (e.g., SMS, etc.) may be sent. In other instances, mobileapplications installed on a particular device may be able to receive,from a backend notification system, a particular message to be pushed tothe user on the mobile device.

A problem with many current notification systems is that they fail toconsider individual or contextual circumstances outside of thenotification triggering requirements themselves. For example, inresponse to a national news event, a news application such as a CNN appmay initiate, via a backend system associated with the app, a pushnotification to subscribers and registered users. However, contextsspecific to particular users may mean that such notifications are notwelcome at a particular time or place on the user's device, such as whenthose users are in a meeting, at an event, or another location, or basedon other contextual parameters. As another example, the throttling,delaying, or cancelling of particular triggered notifications can bevaluable when sending those notifications may be otherwiseinappropriate. For example, during standard business hours and while anumber of other users at a location is low, users visiting a weddingreception hall may receive an offer for a loan to assist in paying forany wedding-related expenses. However, sending similar offers on Fridaysand Saturdays during potential wedding hours (and, additionally oralternatively, when many persons or users are at the location) may beinappropriate, as persons attending the wedding may not need or wantwedding loans or disruptions during the ceremony and party.

In other instances, the push notification provider may have a set ofnotifications that are triggered when users arrive at a particularlocation, such as a particular restaurant or area of a city. Mostnotification rules may automatically trigger these notifications asusers arrive to the location, such as where the notifications relate toparticular discounts, or to otherwise boost engagement withcustomers/users. However, in times of a rush, heavy traffic, or otherunusual amounts of persons present, triggering the notificationautomatically may be problematic for a number of reasons. In oneinstances, multiple individuals receiving the same notification at thesame time may reduce each individual's perception of unique or specialselection and privilege relative to their peers, such as where thenotification relates to an advantageous rate on a new loan or otherfinancial service.

To alleviate the drawbacks of the problems mentioned above, and toenhance push notification systems and their contextual awareness, adynamic notification engine is described herein where push notificationsand other messages to be send to a user or group of users can bethrottled (e.g., cancelled, delayed, or otherwise modified) based on acontextual analysis performed at a time when the push notification istriggered or at a time at which the push notification is to betransmitted to user devices of those users. In doing so, the subjectmatter of the push notification (e.g., a targeted offer) can beperceived to retain the qualities of personalization and relevance usedto optimize the probability of the offer being acted on. Further, thecontextual analysis of the current situation of the user, including thelocation of the user, as well as relative impact the notification mayhave on one or more other users, including those also targeted toreceive the notification, further provides a more nuanced analysis ofthe notification itself associated with such automatic triggering.

The present solution is unique and different from existing solutionscentered solely upon pushing notifications to customers withoutconsideration of the effects of over-pushing notifications orinappropriately pushing notifications to customers. For example, currentsolutions fail to consider the sensitivities of customers and potentialcustomers, and how those customers may be affected by a commercialentity sending notifications to them at inappropriate times or withoutconsidering the uniqueness of a particular customer or situation.Although some existing methods may exist to limit, for example, thenumber of notifications sent per time period, this is not done in anautomated way wherein the behaviors of users are studied andrelationships are made to derive such limitations which induce anoptimal response from an entity's customers. For each of the particularthrottling and notification modification methods described herein, thereis likely an optimal value or range of values past which the likelihoodof customer responses is not optimized, instead lowering than it couldbe due to over-pushing or other affects. By determining optimal levelsof notifications, notifications which are automatically triggered basedon some event or in response to some trigger may be throttledaccordingly.

Multiple examples of potential throttling and/or modification oftriggered notifications can be included herein. As described herein,three general types of modification rules may be applied to particularcontextual situations. These modification rule types may be consideredseparately, or the rule types may overlap in some implementations to beanalyzed in combination. Additional contextual rule sets and typesoutside of these may be considered in the context of the presentsolution. The three primary context types described herein relate to (1)contexts in which a user-specific context is considered, (2) contexts inwhich a user's current context is considered in relation to one or moreother users, and (3) contexts where users are at a particular location,where the location, or an event occurring at or associated with thelocation, is analyzed.

Example notification modification rules may be based on one or more ofthe following:

-   -   In relatively dense areas, push notifications may be provided to        every n^(th) customer in the area to avoid widespread spamming        of similarly-situated individuals.    -   A recent history of a particular user's location may be analyzed        for a total time spent in a particular area or based on a prior        location visited by the user. In doing so, a push notification        may be allowed only where a customer spends a particular amount        of time in an area, or in response to a particular prior        location being visited.    -   Some messages may be triggered based on a particular user's        presence in an area. A notification modification rule may        determine whether a particular (or threshold) number of other        users or persons are also within the area. The triggered        notification associated with the particular user's presence in        the area may be throttled (e.g., cancelled in this instance)        when more than the particular number of users are present. In        such instances, the relative user context indicates that a        situation associated with the triggered notification may not be        appropriate when more than the threshold number of users or        persons are present.    -   Push notification limits can be enforced on a per-user basis,        even where particular notification triggers occur generally and        automatically. Prior to the triggered notification being sent, a        history of notifications received within a particular period of        time specific to the user can be analyzed. In some instances,        further notifications can be cancelling when a threshold number        of notifications have already been received by the user.        Alternatively, notifications may be associated with a particular        tag, type, or other identifier. Entities can identify limits on        particular types of messages to be sent. When a notification of        a particular type is triggered, the modification rule can be        used to determine whether that particular type of notification        has already been received by the user within a particular        period, and if so, can cancel or delay the notification prior to        transmission.    -   User notification histories can be used in other instances to        shape or otherwise modify the contents of a particular triggered        notification. For example, a list of available push        notifications may be triggered for a particular zone or        location, with each of the notifications being associated with a        particular percentage of use adding to 100%. Using a history of        the particular notification received previously for a user,        future notifications can be modified to ensure that the        percentage is met while also avoiding duplicative notifications.    -   In some instances, relatively generic notifications can be        throttled based on additional modification rules using user        profile requirements or other considerations prior to particular        triggered notifications being transmitted. For example, mobile        financial application users may be associated with a triggered        notification based on a determination that they have simply        arrived at a location of the financial institution providing the        application. However, such notifications may be tailored        specifically to high net worth individuals, or individuals with        (or without) particular types of existing loans or other        financial products. A modification rule can be set to analyze        the particular user profile associated with the triggered        notification to determine whether the current context of the        user profile meets the requirements of a modification rule        associated with the notification. If the user profile should        receive the triggered notification, the notification is sent. If        the user profile does not meet the additional requirements, then        the notification can be modified according to the modification        rule (e.g., cancelled or otherwise modified).    -   Some modification rules may determine that a particular location        at which the user profile is located at the time the        notification is triggered or to be transmitted is associated        with a modification rule. For example, a worship site (e.g., a        church, a synagogue, a mosque, etc.) may be associated with a        delay or suppression modification rule. Similarly, an opera        house, concert hall, or sporting event may also be associated        with similar rules. In response to determining that the context        of the user profile set to receive the notification is        associated with a particular location, then the modification        rule can stop and/or delay transmission of the triggered        notification based on this information.

Any number of suitable modification rules can be defined in differentimplementations, and can in fact take various types of contextualinformation into account about a particular user profile, a group ofuser profiles, and/or a location or area associated with the currentcontext of a user profile. Sources of information relevant to themodification rules can include information received from the user deviceassociated with one or more user profiles (e.g., smartphones), socialnetwork postings (e.g., Facebook check-ins, status updates, etc.),information from one or more other applications or backend systems(e.g., a financial transaction system providing information on recenttransactions, location information derived from another application ordetected by another system), or any other suitable information source.

Advantages of the described solution are numerous. For example, thepresent solution allows a check on triggered notifications prior tosending, such that notifications triggered for any reason can becompared to a contextual understanding of a particular user's situation,availability, and preference to receive a communication. Further, thecontext considered may be more than just a particular user's context,but instead an analysis of one or more other users in the particularuser's vicinity. In doing so, specific considerations can be added to astandard notification prior to transmission based on an overall contextof a current situation, not just on a particular user profile. By usinga contextual rules engine and analysis, notification providers can add afurther layer of intelligence into their notification systems, and userscan avoid unnecessary and unwarranted communications. Further, by addingthe modification rules on a layer on top of and apart from thenotification rules causing the particular notification to be triggered,the modification rules can provide a more generic layer of considerationfor triggered notifications without the need to specifically programand/or modify existing notification rules. Custom notificationmodification rules can be developed that are user specific and that canbe layered on top of a more general notification layer. Additionally,general notification rules can be modified or otherwise extended toprovide user-specific rule implementations. Other advantages include theability to automatically generate rules by analyzing user profile dataand developing rules which maximize the probability of the user actingupon a notification, such as by evaluating user actions in response toparticular notifications. Information associated with the user profileat the time of those prior notifications can be used to determine how todefine particular modification rules. In one example, a system that maygenerate such a rule may be an AI or machine learning algorithm.

Turning to the illustrated example implementation, FIG. 1 is a blockdiagram illustrating an example system 100 for triggering notificationsassociated with one or more user profiles and evaluating whether thosetriggered notifications are to be modified in response to one or moremodification rules. Specifically, the illustrated system 100 includes oris communicably coupled with a notification system 102, a client device160, one or more external data or information sources 190, and a network150. System 100 is a single example of a possible implementation, withalternatives, additions, and modifications possible for performing someor all of the described operations and functionality. Although shownseparately, in some implementations, functionality of two or moresystems or servers may be provided by a single system or server. In someimplementations, the functionality of one illustrated system or servermay be provided by multiple systems, servers, or computing devices,including those physically or logically local or remote to each other.Any combination or permutation of systems may perform the functionalitydescribed herein.

As used in the present disclosure, the term “computer” is intended toencompass any suitable processing device. For example, client device160, notification system 102, and the external data or informationsources 190 may be any computer or processing device (or combination ofdevices) such as, for example, a blade server, general-purpose personalcomputer (PC), Mac®, workstation, UNIX-based workstation, embeddedsystem or any other suitable device. Moreover, although FIG. 1illustrates particular components as a single element, those componentsmay be implemented using a single system or more than those illustrated,as well as computers other than servers, including a server pool orvariations that include distributed computing. In other words, thepresent disclosure contemplates computers other than general-purposecomputers, as well as computers without conventional operating systems.Client device 160 may be any system which can request data, execute anapplication, and/or interact with the notification system 102. Theclient device 160, in some instances, may be any other suitable device,including a mobile device, such as a smartphone, tablet, smartwatch, orany other mobile computing device. In general, each illustratedcomponent may be adapted to execute any suitable operating system,including Linux, UNIX, Windows, Mac OS®, Java™, Android™ Windows PhoneOS, or iOS™, any real-time OS among others.

The notification system 102 can perform functionality associated withidentifying when one or more notifications (e.g., push notifications,text messages, social media posts, etc.) are to be triggered inassociation with one or more user profiles. Additionally, and separatefrom the initial triggering of particular notifications, thenotification system 102 can obtain or access additional contextualinformation associated with particular users to apply one or moremodification rules. The modification rules can use a dynamic contextualengine (i.e., contextual analysis module 114) to determine whether thecurrent context of the particular user associated with a triggerednotification, a current context of a plurality of users associated withtriggered notifications, or a relative context of a first particularuser in light of one or more other users determines that one or moretriggered notifications are to be modified. Notification modificationcan occur in a number of ways, including by suppressing or cancelling atriggered notification, by delaying a triggered notification until theanalyzed context has changed (e.g., by placing a notification in aqueue, or setting a time to recheck the current context, etc.), or bymodifying the contents of a particular triggered notification inresponse to the analyzed context.

As illustrated, the notification system 102 includes a notificationanalysis engine 108, where the notification analysis engine 108 canmanage both the triggering of the notifications (e.g., by thenotification generation module 110) and subsequent modification to thosetriggering notifications (e.g., by the notification modification module112). While illustrated as within a single system, such components maybe split between two or more systems and servers, and may be operated,managed, or otherwise executed by different entities. In some instances,a third-party system may provide additional information about particularcurrent contexts for users allowing for the notification modificationmodule 112 to be executed, while a first system triggers notificationswithout specific regard to all contextual considerations using thenotification generation module 110. Alternatively, a third-party systemor component may trigger notifications in response to an event or othertriggering factor, including those not associated with the particularuser (e.g., marketing materials sent to a particular contact list vianotification). The triggered notification can be provided to thenotification modification module 112 where the contextual analysis canbe performed and a determination made whether to modify the triggerednotification. Alternatively, the notification generation module 110 canrequest a contextual analysis by the notification modification module112 and a determination of whether a particular modification rule 140 issatisfied. If no rule is satisfied, then the triggered notification canbe transmitted; however, if a modification rule is met, then thenotification modification module 112 can perform the modificationassociated with the satisfied rule.

In some instances, at least a portion of the notification system 102 maybe associated with a financial institution such as a bank or creditunion, a credit card issuer, or other institutions. Alternatively, atleast a portion of the notification system 102 may be associated withone or more goods or service providers, marketers, advertising agencies,social networks, e-mail systems, or any other suitable entity associatedwith notifications sent to users. At least a portion of the notificationsystem 102 may also be associated with a contextual analysis system usedin marketing and business-to-consumer communications, as well as othersimilar entities providing contextual analyses of registered users. Insome instances, the notification system 102 may be a part of a largerbackend system associated with particular mobile or client applications,where the notifications being triggered are triggered in associationwith the functionality of the backend system (e.g., financial productoffers to be presented by a financial mobile application, coupons orincentives delivered in association with an eCommerce site and presentedby a mobile application associated with that eCommerce site). In otherinstances, the notification system 102 may be a generic system used bymultiple applications to manage push and other types of notifications tousers and their corresponding client devices 160, includingfunctionality built into or associated with a mobile operating system.The notification system 102 may be a part of, associated with, or usedby retailers, service providers, marketing firms, mobile games, socialnetworks, eCommerce sites, news-based platforms, financial institutions,and any other suitable entity, system, platform, and/or service.

As illustrated, the notification system 102 includes interface 104,processor 106, the notification analysis engine 108, and memory 120.Interface 104 is used by the notification system 102 for communicatingwith other systems in a distributed environment—including within theenvironment 100—connected to the notification system 102 and/or network150, e.g., client device(s) 160, any external data or informationsources 190, as well as other systems or components communicably coupledto the network 150. Generally, the interface 104 comprises logic encodedin software and/or hardware in a suitable combination and operable tocommunicate with the network 150 and other communicably coupledcomponents. More specifically, the interface 104 may comprise softwaresupporting one or more communication protocols associated withcommunications such that the notification system 102, network 150,and/or interface's hardware is operable to communicate physical signalswithin and outside of the illustrated environment 100.

Network 150 facilitates wireless or wireline communications between thecomponents of the environment 100 (e.g., between combinations of thenotification system 102, client device(s) 160, and/or the external datasources 190, among others) as well as with any other local or remotecomputer, such as additional mobile devices, clients, servers, remotelyexecuted or located portions of a particular component, or other devicescommunicably coupled to network 150, including those not illustrated inFIG. 1. In the illustrated environment, the network 150 is depicted as asingle network, but may be comprised of more than one network withoutdeparting from the scope of this disclosure, so long as at least aportion of the network 150 may facilitate communications between sendersand recipients. In some instances, one or more of the illustratedcomponents (e.g., the notification system 102) or portions thereof(e.g., the notification modification module 112) may be included withinnetwork 150 as one or more cloud-based services or operations. Thenetwork 150 may be all or a portion of an enterprise or secured network,while in another instance, at least a portion of the network 150 mayrepresent a connection to the Internet. In some instances, a portion ofthe network 150 may be a virtual private network (VPN) or an Intranet.Further, all or a portion of the network 150 can comprise either awireline or wireless link. Example wireless links may include802.11a/b/g/n/ac, 802.20, WiMax, LTE, and/or any other appropriatewireless link. In other words, the network 150 encompasses any internalor external network, networks, sub-network, or combination thereofoperable to facilitate communications between various computingcomponents inside and outside the illustrated environment 100. Thenetwork 150 may communicate, for example, Internet Protocol (IP)packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells,voice, video, data, and other suitable information between networkaddresses. The network 150 may also include one or more local areanetworks (LANs), radio access networks (RANs), metropolitan areanetworks (MANs), wide area networks (WANs), all or a portion of theInternet, and/or any other communication system or systems at one ormore locations.

The notification system 102 also includes one or more processors 106.Although illustrated as a single processor 106 in FIG. 1, multipleprocessors may be used according to particular needs, desires, orparticular implementations of the environment 100. Each processor 106may be a central processing unit (CPU), an application specificintegrated circuit (ASIC), a field-programmable gate array (FPGA), oranother suitable component. Generally, the processor 106 executesinstructions and manipulates data to perform the operations of thenotification system 102, in particular those related to executing thenotification analysis engine 108 and its various modules. Specifically,the processor 106 executes the algorithms and operations described inthe illustrated figures, as well as the various software modules andfunctionalities, including the functionality for sending communicationsto and receiving transmissions from the client devices 160 and/or theexternal data or information sources 190, as well as to other devicesand systems. Each processor 106 may have a single core or multiplecores, with each core available to host and execute an individualprocessing thread. In some instances, a cloud-based solution may use oneor more remotely or otherwise available processors 106 and their coresto allow for further operations and optimization of operations viaparallel processing.

Regardless of the particular implementation, “software” includescomputer-readable instructions, firmware, wired and/or programmedhardware, or any combination thereof on a tangible medium (transitory ornon-transitory, as appropriate) operable when executed to perform atleast the processes and operations described herein. In fact, eachsoftware component may be fully or partially written or described in anyappropriate computer language including C, C++, Objective-C, JavaScript,Java™, Visual Basic, assembler, Perl®, Swift, HTML5, any suitableversion of 4GL, as well as others.

The notification analysis engine 108 may be any application, framework,agent, or other software capable of interpreting particular rules of anotification rule set 138 to generate one or more notifications (i.e.,by the notification generation module 110). As illustrated, thenotification analysis engine 108 further performs operations subsequentto the triggering of particular notifications, where those operations(i.e., those of the notification modification module 112) determinewhether any particular contextual parameters exist as to why thetriggered notification is to be modified based on a set of modificationrules 140.

The notification generation module 110 may be incorporated into thefunctionality of the notification analysis engine 108. A first set ofcontextual information may be used to determine whether a particularnotification should be generated or triggered. In some instances, theindication that a particular user is located at a location associatedwith a notification may trigger the notification. In other instances, aparticular transaction performed by the user may trigger thenotification. In some instances, a combination of a transaction at aparticular location may trigger a notification. Any number of othernotification rules may be included in the notification rule set 138, andmay be considered by the notification generation module 110 to determinewhether notifications are to be triggered. In some instances, particularnotifications may be triggered on a predetermined schedule or inresponse to an external trigger from an entity or person associated withthe notification (e.g., a marketing message or communication) withoutreference or consideration of the one or more users to whom thenotification is to be sent. Restated, a notification considered in thissolution may be triggered in response to any input, action, event, orreason. In some instances, the notification triggered may be for asingle user, while in others the notification may be for a plurality ofusers. The plurality of users may share some general characteristic,including a determined physical location, a common action ortransaction, a common set of registered users associated with a userprofile for a particular entity associated with the transaction, or anyother shared characteristic. In some instances, such as the situationwhere a user merely has a registered profile, the connection andcommonality may be relatively high level without consideration ofparticular contextual information specific to a user or to a currentrelationship between two or more of the users.

Once a notification is triggered, the notification analysis engine 108uses a notification modification module 112 to perform a specificcontextual analysis apart and different from the triggering of thenotification. In particular, the notification modification module 112can perform, for one or more of the users associated with the triggerednotification, one or more contextual analyses via the contextualanalysis module 114. The contextual analysis module 114 may be astandalone or remote component, or can be part of the notificationmodification module 112 and/or the notification analysis engine 108.

In general, the contextual analysis module 114 can identify and obtainone or more sources of data particular to individual users and theircorresponding user profiles 122. In some instances, the contextualinformation may be obtained in response to a ping or request for currentinformation from one or more user devices (e.g., client devices 160)associated with the user profile 122 of a particular user associatedwith a triggered notification. For example, the contextual analysismodule 114 can obtain information about the user from data on the clientdevice 160 associated with the user (e.g., location data 176 ortransaction data 178), as well as from information associated with theuser profile stored in local memory 120 or a remotely accessible datastore. The stored information in the user profile may includeinformation about prior notifications received or sent to the particularuser (i.e., notification history 124), one or more related users 126, atransaction history 129 associated with the user profile, and one ormore user devices 128 associated with the user, where those devices 128(e.g., client device 160) may be used as a proxy for the locationassociated with user profile 122, and may also be used to identifyparticular end points for the triggered notifications when transmittingthe notifications. More than one user device 128 may be identified inthe user profile 122, such as for a tablet and a smartphone. A primarydevice may be identified, or the most recent device in use may be usedas the device for determining a current location, in some instances.Other suitable information can also be stored or associated with theuser profiles 122. At least some of the information can be stored as acurrent user context 130. In some instances, a time series of usercontexts 130 may be kept or archived to provide information related to aparticular user profile 122 over time.

As illustrated in FIG. 1, the current user context 130 includes acurrent location 132 associated with the user profile (e.g., based onone or more transactions or based on locational data received from theclient device 160 or other data source), additional user-specificcontext 134 (which may include social media-related information, such asposts or other user input, social media check-ins, interactions with oneor more devices or systems (e.g., a particular Wi-Fi network or set ofnetworks), prior interactions with particular applications orfunctionality, etc.), and information about a related or nearby groupcontext 136, which may include information about relatively nearby(e.g., within local communication distance) of one or more other users.In some instances, the nearby group context 136 can be determined afterinformation associated with a plurality of registered users associatedwith user profiles has been obtained, such that a relative or absolutelocation of multiple users can be determined. Based on this information,a relative location of those other users can be identified and arelative user context can be maintained. In some instances, at least aportion of the current user context 130 may be obtained on a periodicbasis regardless of the notifications being triggered, while in otherinstances, portions of the current user context 130 may be obtaineddirectly as a result of a notification being triggered for theparticular user profile 122.

As illustrated, the contextual analysis module 114 includes a contextualdata source application programming interface (API) 116. The contextualdata source API 116 can be used to obtain contextual informationassociated with particular user profiles 122 from one or more sourcesexternal from the client device 160 itself and/or that is not availablefrom the user profile 122. In some instances, a unique identifier may beassociated with the particular user profile 122 of a particular user maybe provided to the contextual data source API 116. Using the interface104 and network 150, requests for additional contextual informationassociated with the uniquely identified user profile 122 can besubmitted via the API 116, which may be associated with one or moreexternal data sources 190. In one example, particular social networkinformation may be obtained, including current status and interactioninformation, as well as other relevant information. Further, informationassociated with activities and interactions with one or more otherentities other than the entity associated with the triggerednotification may be obtained. Such information can be used to provideinformation on the location, movement, and activities of the particularuser, as well as additional context to the already obtained or availableinformation within the user profile. The contextual data source API 116can be used in associated with multiple different external data orinformation sources 190, which are not meant to be limiting toparticular services. Alternative, multiple APIs or other connections maybe available to other data sources to request similar information.

Once the current user context 130 is generated, the notificationmodification module 112 can determine whether one or more of themodification rules 140 has been satisfied prior to transmitting thetriggered notification. As illustrated, the modification rules 140contain different types of rules as examples, including userprofile-specific rules 142, relative user context rules 144 (e.g., basedon the user's current context in light of the current contexts of one ormore other users or persons), location-specific rules 146, and othermodification rules 148. Each of the rules can include a set ofcontextual parameters where the rule is satisfied and a correspondingmodification action to be performed in such instances. The modificationactions may include full suppression or cancellation of a triggerednotification, as well as modifying particular contents of the triggerednotification. In some instances, the modification rules 140 may beevaluated at a time the notification is triggered, or alternatively,they can be evaluated at a time just prior to when the notification isto be transmitted.

User profile-specific rules 142 can be specifically associated withparticular user profiles. In some instances, users may provide explicitinformation about when notifications are allowed. For example, the usermay specify that no notifications should be received during work hoursand/or at a particular location. Alternatively, user profile-specificrules 142 can be generated automatically based on success or failurerates of particular notifications. For example, if a user's pattern ofbehavior indicates that notifications including offers during a certaintime range are ignored above a particular threshold, then acorresponding user profile-specific rule 142 can created for that timerange and used for future notifications. In some instances, the userprofile-specific rules 142 may be associated with a particular thresholdfor a number of messages received over a period of time. Using a user'sspecific notification history 124, the user profile-specific rule 142can determine whether the threshold number of messages has been met fora particular time period. That threshold may be based on notificationsfrom a particular entity, or that threshold may be based onnotifications received from two or more different or related entities.User profile-specific rules 142 can be uniquely defined or associatedwith a single user profile 122, while in other instances userprofile-specific rules 142 can be measured in isolation against onlyinformation associated with the single user profile 122 (e.g., otheruser profiles are not considered). Another example of a userprofile-specific rule 142 may include an evaluation or determinationthat the user profile was associated with a recent transactionassociated with an entity related to the triggered transaction. If so,the triggered notification may be cancelled or delayed in order to avoidoversaturating the user with notifications that may not be relevantafter completing a related transaction. In some instances, auser-specific rule may be based on one or more planned or scheduledactions associated with the user. For example, a user may indicate,explicitly or through prior actions, that he or she intends to take aparticular train. The present solution could incorporate externalcontextual information along with a current user context to generate theuser-specific context. For example, where a user is going to catch atrain for work in the morning, the user's location and current orexpected movements may be known. Based on the travel time to the trainstation, the system can determine whether the user's current locationand the time to the train station provide a correct amount of time priorto the particular train arriving. In some instances, where the time toarrive may leave less than a threshold amount of time for the user toarrive, one or more generic triggered notifications can be throttled orotherwise suppressed to avoid distraction to the user. Alternatively, orin combination, notifications associated with a particular topic, here,the status of the train to be caught (e.g., updated arrival time,information that the train has already left), may be allowed to betransmitted to the user.

The relative user context rules 144 can include rules where contextsassociated with a group of user profiles are evaluated. In someinstances, a single user's current context is evaluated against a groupof other users for determining the relative user context and theapplication of any associated relative user context rules 144. In oneexample, a particular relative user context rule 144 may identify that aplurality of users are at a common location. In response to thisdetermination, a triggered notification can be suppressed, such as wherethe notification relates to an offer meant to be prestigious orotherwise unique. In some instances, the plurality of other users mayall be associated with triggered notifications, or they may not be. Insome instances, the relative user context rule 144 may consider whetherthose nearby users are also associated with a triggered notification. Ifthey are not, the notification may still be transmitted. If they areassociated with similar triggered notifications, however, at least someof those notifications may be suppressed to avoid removing the prestigeof the included offer. In some instances, the relative user context rule144 can include parameters for suppressing or cancelling only a portionof the triggered notifications associated with the group of users. Forexample, the relative user context rule 144 may indicate that only 10%of the group, when reaching a particular size, may still receive thetriggered notification that would have otherwise been provided to eachof the users. In those instances, the notification modification module112 can identify the appropriate user profiles 122 still to receive thetriggered notification and those that should not. The module 112 canthen suppress or otherwise cancel those triggered notificationsassociated with users who will not receive the notification.

In some instances, the relative user context rule 144 may be based on adetermination that the different users are in a common or same location.In some instances, the rule may specify a relative location to otherusers receiving the notification, such that the absolute location doesnot matter. For example, a notification may be triggered regarding aprestigious loan product. However, a relative user context rule 144 maybe satisfied where more than five (5) users associated with thetriggered notification are within a particular distance, area, or rangerelative to one another. Therefore, that specific rule 144 may besatisfied while the associated users are at a restaurant, at an event,are on the street walking, or any other location where they arerelatively near or within the vicinity of one another. In a differentinstance, the common location may be a predefined location, such as aparticular location, store, event space, meeting, or other location. Assuch, when a particular number of users are at that predefined location,the rule 144 may be satisfied.

The location-specific rules 146 can be associated with particularlocations, where these rules can be used for a plurality of users. Insome instances, such location-specific rules 146 can identify an area, abusiness, a venue, a neighborhood, place of worship, or any otherlocation. The location-specific rules 146 associated with theselocations can be used to determine whether a current context of aparticular user profile or set of user profiles are associated with orlocated at the particular location included in the location-specificrule 146. In some instances, the user profile can be associated with thelocation of a user device associated with the user profile.Alternatively, the location associated with the user profile may bedetermined based on a recent transaction of a transaction history 129associated with the user profile, or alternatively, information obtainedfrom one of the external data or information sources 190. Thelocation-specific rule 146 may identify a location and a time rangeassociated with the location during which the rule can be satisfied.Outside of the time range, the particular rule 146 cannot be satisfied.Similarly, particular locations may be associated with one or moreevents, such as sporting events, performances (e.g., concerts),weddings, etc. In those instances, the particular locations may beassociated with event-specific time ranges, where the location-specificrule 146 may only be satisfied while an event at that location isongoing. The contextual analysis module 114 can access social mediafeeds, running time information, game-related descriptions, and otherinformation to consider when the event is ongoing. Still further, someof these events may be associated with breaks or intermissions. Thecontextual analysis module 114 obtains information identified atspecific times when these breaks/intermissions occur, or determine,based on obtained information, when attendees are taking said break. Insome instances, such a determination may trigger the sending of one ormore delayed notifications.

For some or all rules 140, the modifications occurring when themodification rule 140 is satisfied may be used to enact a delay of thetriggered notification. For example, in the location-specific rule 146example, the triggered notification may be delayed until the particularuser profile is no longer at or associated with the particular location.The notification modification module 112 may make periodic checks of thecurrent user context 130 to determine whether the location has changed,and, in response to that determination that the location-specific rule146 is no longer satisfied, the module 112 can allow the delayednotification to be transmitted. In some instances, delayed notificationsmay be held in a queue for a period of time while the current usercontext 130 satisfies the modification rule 140. In some instances, thedelay may be indefinite and the notification may be held until thecontext is changed and the modification rule 140 is no longer satisfied.In other instances, after a delay period, the triggered notification maybe cancelled once a time limit (e.g., default value or defined as partof the rule 140) is exceeded.

As noted, any suitable modification rule 140 can be defined and used inthe present solution. The other modification rules 148 represent thoserules, as well as rules which incorporate various aspects of the userprofile-specific rules 142, the relative user context rules 144, and thelocation-specific rules 146.

As illustrated and described, notification system 102 includes memory120. In some implementations, the notification system 102 includes asingle memory or multiple memories. The memory 120 may include any typeof memory or database module and may take the form of volatile and/ornon-volatile memory including, without limitation, magnetic media,optical media, random access memory (RAM), read-only memory (ROM),removable media, or any other suitable local or remote memory component.The memory 120 may store various objects or data, including caches,classes, frameworks, applications, backup data, business objects, jobs,web pages, web page templates, database tables, database queries,repositories storing business and/or dynamic information, and any otherappropriate information including any parameters, variables, algorithms,instructions, rules, constraints, or references thereto associated withthe purposes of the notification system 102. Additionally, the memory120 may store any other appropriate data, such as VPN applications,firmware logs and policies, firewall policies, a security or access log,print or other reporting files, as well as others. As illustrated,memory 120 includes, for example, the plurality of user profiles 122,the notification rule set 138, and the modification rules 140, describedherein. Memory 120 may be local to or remote to the notification system102, and may be available remotely via network 150 or an alternativeconnection in such instances where not locally available. Further, someor all of the data included in memory 120 in FIG. 1 may be locatedoutside of the notification system 102, including within network 150 ascloud-based storage and data.

The external data sources or information sources 190 may be system,server, or other computing device associated with a particular entity,business, platform, or computing system with which additional contextualinformation can be derived in association with one or more particularuser profiles. In some instances, the contextual analysis module 114 mayaccess these sources in response to a triggered notification. In otherinstances, the sources 190 may be accessed on a regular basis (e.g.,periodically, in response to particular events or actions, etc.), wherethe obtained information is associated with and/or stored in associationwith particular user profiles 122. The external data sources orinformation sources 190 may be associated with a financial institution,a transactional system, a social network, an event tracking system, orany other suitable system, including one or more other mobileapplications and application backend systems. In some instances, theexternal data sources 190 exchange may be associated with a businessselling goods or providing services, or a centralized system collectinginformation about various activities and transactions performed by theuser associated with the particular user profile 122.

Illustrated system 100 includes at least one client device 160, and mayinclude a plurality of the client devices 160 in some instances. Eachclient device 160 may generally be any computing device operable toconnect to or communicate within the system 100 via the network 150using a wireline or wireless connection. In general, the client device160 comprises an electronic computer device operable to receive,transmit, process, and store any appropriate data associated with thesystem 100 of FIG. 1. The client device 160 can include one or moreclient applications, including the client application 168. In someinstances, the client device 160 may comprise a device that includes aninput device, such as a keypad, touch screen, or other device(s) thatcan interact with the client application 168 and other functionality,and an output device that conveys information associated with theoperation of the applications and their application windows to the userof the client device 160. Such information may include digital data,visual information, or a graphical user interface (GUI) 166, as shownwith respect to the client device 160. In general, client device 160comprises an electronic computer device operable to receive, transmit,process, and store any appropriate data associated with the environment100 of FIG. 1. In particular, the client devices 160 are devicesassociated with particular user profiles 122 within or associated withthe notification system 102, and to which one or more triggerednotifications may be delivered (e.g., via the client application 168)and presented (e.g., via GUI 166).

Client application 168 can be any type of application that allows theclient device 160 to request and view content on the client device 160.In some instances, client application 168 may correspond with one ormore backend applications or functionality, including an application orplatform associated with the notification system 102. Users may interactwith the client application 168 to make purchases, review user accounts,interact with friends, participate in social networks, view multimedia,or any suitable function. In some instances, the client application 168may be an agent or client-side version of the one or more applicationsor services running on a backend system, such as an agent or client-sideversion of the applications and systems using or associated with thenotification system 102. In the present solution, the triggerednotifications transmitted to the client device 160 can be presented viafunctionality associated with the client application 168. In manyinstances, the client device 160 may be a mobile device, including butnot limited to, a smartphone, a tablet computing device, alaptop/notebook computer, a smartwatch, or any other suitable devicecapable of interacting with the notification system 102 and/or any othersuitable systems or networks. One or more client applications 168 may bepresent on a client device 160, and can provide varying functionality.In some instances, client application 168 may be a web browser, mobileapplication, cloud-based application, or dedicated remote application orsoftware capable of interacting with at least some of the illustratedsystems via network 150 to request information from and/or respond toone or more of those systems.

In some instances, the client application 168 may be to provideinformation about a particular context of the client device 160 back tothe notification system 102. Such information may include particularoperations, transactions (e.g., transaction data 178), and location data176 monitored or obtained by the client device 160 during itsfunctionality. The location data 176 may be obtained via a globalpositional system (GPS) 170, an assisted GPS, or another suitablelocation identifier associated with the client device 160. The GPS 170may be a specific chip or component providing location information, ormay be functionality associated with a particular client application 168or operating system allowing the client device 160 to identify ordetermine information needed to provide or derive the particularabsolute or relative location of client device 160. For example, theclient application 168 and/or functions of the device's operating systemmay report particular location-related information back to thenotification system 102 for the user profile 122, including availableWi-Fi networks, particular coordinates, and identified iBeacons orwireless connections (e.g., Bluetooth devices, RFID readers, NFCreaders, etc.). That information can then be used by the notificationsystem 102 to derive a particular location at which the client device160 is located. Similarly, the client application 168 may provideinformation about particular transactions via the transaction data 178,both specific to the client application 168, as well as transactionsperformed by other applications and/or other operating systemfunctionality. The transactions shared may be financial transactions,data exchanges, wireless connections made or identified, or any othersuitable information. The location data 176 and the transaction data178, as well as any other information obtained or available to theclient device 160, can be used to define a local set of contextual data174 for the client device 160. That data can be periodically provided tothe notification system 102, including in response to a notificationbeing triggered.

As illustrated, the client device 160 may also include an interface 162for communication (similar to or different from interface 104), aprocessor 164 (similar to or different from processor 106), memory 172(similar to or different from memory 120), and GUI 166. GUI 166 caninterface with at least a portion of the environment 100 for anysuitable purpose, including generating a visual representation of theclient application 168, presenting a pop-up or push notification orpreview thereof, or any other suitable presentation of information. GUI166 may also be used to view and interact with various Web pages,applications, and Web services located local or external to the clientdevice 160, as well as information relevant to the client application168 and any received notifications sent from the notification system102. Generally, the GUI 166 provides the user with an efficient anduser-friendly presentation of data provided by or communicated withinthe system. The GUI 166 may comprise a plurality of customizable framesor views having interactive fields, pull-down lists, and buttonsoperated by the user. For example, the GUI 166 may provide interactiveelements that allow a user to view or interact with information relatedto the operations of processes associated with the notification system102 and any associated systems, including those associated with orconnected to notification system 102, among others. In general, the GUI166 is often configurable, supports a combination of tables and graphs(bar, line, pie, status dials, etc.), and is able to build real-timeportals, application windows, and presentations. Therefore, the GUI 166contemplates any suitable graphical user interface, such as acombination of a generic web browser, a web-enabled application,intelligent engine, and command line interface (CLI) that processesinformation in the platform and efficiently presents the results to theuser visually.

While portions of the elements illustrated in FIG. 1 are shown asindividual modules that implement the various features and functionalitythrough various objects, methods, or other processes, the software mayinstead include a number of sub-modules, third-party services,components, libraries, and such, as appropriate. Conversely, thefeatures and functionality of various components can be combined intosingle components as appropriate.

FIG. 2 is an example diagram 200 of a data flow associated with anotification modification analysis. The diagram provides an example setof operations and interactions to identify a current user context and,in response to a notification being triggered, determine whether one ormore modification rules apply to a particular user profile and/or aparticular notification.

Information about particular user profiles can be collected at acentralized user context database 230. The information maintained orassociated with the user context database 230 can be associated withparticular user profiles, where those user profiles are associated withparticular user devices 210. Over time, or in response to a notificationbeing triggered, information from a number of sources may be consideredto determine a current context associated with a particular userprofile. The current context may be based on a single user profilespecifically, or may be determined or set in reference to one or morerelated user profiles. The user mobile devices 210 can provide, forinstance, current and recent location data to identify a particularlocation of the user device (and therefore, as a proxy of the userassociated with the user profile). In some instances, additionaltransactional data may be provided by the user device 210, which mayinclude additional information on financial transactions, messages sent,operations performed in particular applications, and other transactionsperformed on the user device. The current and recent location data maybe provided in absolute GPS coordinates, or alternatively, in data whichcan allow a particular location to be determined (e.g., nearby availableWi-Fi networks, iBeacon information, etc.). The information from theuser devices 210 can be defined as recent contextual user data 215. Thismay include data received within a particular period of time, or in apredefined number of data updates.

The user context database 230 can also store and associate significanthistorical user data 220 associated with particular user profiles. Thehistorical user data 220 may include purchase and other transactionhistories, user preferences over time, and other information describingand shaping a user's habits and preferences.

The other user data 225 can include sets of context data from one ormore other users relative to a particular user. In some instances, theother user data 225 may be obtained based on registered users in asimilar location as a particular user when context data is obtained. Insome instances, the other user data 225 may be obtained in a similarmanner to the particular user, where the context information is obtainedover time and added to the user context database 230. A current context,as well as historical information, for the user profiles associated withthose other users can be stored in corresponding user profiles. One ormore of those current contexts can be compared relative to a usercontext for a particular user when a notification is triggered.

The identification and obtaining of user context-relevant informationcan take place over various periods of time. In some instances, onlyimmediately current information may be used for a modification rule,while in others, historical information may be used. As the user profileand contextual information is maintained, the data flow awaits thetriggering of a notification associated with one or more of the userprofiles. As noted in relation to FIG. 1, the triggered notification maybe based on an action performed by a particular user or group of users(e.g., arrive at a particular location, perform a particulartransaction, etc.), or may be triggered based on a request from anentity (e.g., a marketing campaign for a sale, financial product, etc.).In FIG. 2, a notification associated with at least one user profile istriggered at 250. In response to the triggered notification, amodification rules engine 240 (e.g., the notification modificationmodule 112 of FIG. 1, an associative rules engine, etc.) identifies thetriggered notification and the one or more user profiles associated withit.

The modification rules engine 240 determines at 250 whether a particularmodification rule (e.g., of modification rules 255) is satisfied basedon a current context associated with the one or more related userprofiles. In some instances, in response to 250, the modification rulesengine 240 can obtain contextual information from the user contextdatabase 230. Additionally, one or more external information sources ordata feeds 235 can be accessed, particularly when those sources or datafeeds 235 relate specifically to a determination or requirement of amodification rule 255. The modification rules engine 240 can obtain thealready available information from the user context database 230, or maytrigger or cause an updated and real-time or near real-time current setof contextual information to be obtained from the various sources (e.g.,user devices 210, any other user data 225 from user devices associatedwith related user profiles) in response to determining that anotification has been triggered.

As described, the modification rules 255 being evaluated at 250 may beof any suitable type, including a user profile-specific contextual rule,a relative user context rule, or a location-specific rule, among others.Some examples of particular rules may include:

-   -   1) a volume rule, e.g., a rule that allows less than a maximum        amount of notifications to be sent per day, either to a specific        user, to a particular group of users, or by a particular sending        entity;    -   2) a density rule, e.g., where only a percentage of individuals        within a particular area or at a particular location are        provided notifications—in some instances, the density rule may        only be triggered when a group of a particular size of user        profiles are associated with a particular or relative location;    -   3) a timing rule, e.g., a rule specific to a user profile, where        notifications during a certain time range are not allowed;    -   4) a location-related rule, e.g., where no notifications are        allowed when user profiles are associated with a particular        location (e.g., a particular user's work may be prohibited for        that user, or a place of worship or court where no users may        receive notifications); and    -   5) a contextual location rule, e.g., where if less than a        certain number of users are at a location, the notification may        be sent, but where more than a certain number of users are at        the location, the notification is modified.        These examples are meant to be non-limiting, but illustrate some        of the information needed to evaluate the particular        modification rules 255. The external information or data feeds        235 may provide additional information not available through the        user context database 230, such as information related to a        current status of a location or an event associated with the        location (e.g., a sporting event). Alternatively, information        related to a particular user profile may be found or identified        through the external information or feeds 235.

If a determination is made that the current context of a particular usersatisfies a particular modification rule, then at 260, the triggerednotification is modified based on a corresponding modification actiondefined by the modification rule. In some instances, the triggerednotification can be cancelled. In others, the triggered notification maybe delayed for a set period of time, or until the current context of theuser profile associated with the notification is modified and no longersatisfies the particular modification rule. In still other instances,the modification rule may cause the contents of the triggerednotification to be modified. Where the triggered notification isassociated with a plurality of users, only some of those users may seetheir corresponding notification be modified, such that at least some ofthe plurality still receive a transmission of the notification. In someinstances, the original triggered notification may be associated with afirst communication channel (e.g., a push notification). Themodification rule may keep the content of the triggered notification thesame, but may switch the transmission to a second communication channel(e.g., an email including the contents of the triggered notification, asthe email may not be as intrusive to the user). If, however, themodification rule 250 is not satisfied, then at 270, the triggeredtransmission is transmitted to a user device associated with the userprofile.

The analysis performed by the modification rules engine 240 may beperformed individually for each user profile associated with a triggerednotification. Alternatively, the analysis may be performed for a groupof user profiles. Further, multiple modification rules 255 can beevaluated, where appropriate, including modification rules 255specifically applicable and associated with a particular user, as wellas rules that are applied to groups of users and/or particularlocations. In some instances, two or more modification rules 255 may besatisfied in response to a triggered notification. If both modificationrules 255 cause the notification to be cancelled, then the cancellationcan be performed. If the satisfied modification rules 255 contradict oneanother, or cause inconsistent changes (e.g., delay for a first rule andcancel for a second), the modification rules engine 240 can apply aprioritized rule analysis, perform the more significant action (e.g.,perform the cancellation if both cancel and delay are the results of thesatisfied rules), or perform some weighing of the modification rules toidentify which action is to be taken. Any suitable comparison orweighting can be used.

FIG. 3 is a flowchart of an example method for modifying triggerednotifications based on one or more user-specific contextual rules. Itwill be understood that method 300 and related methods may be performed,for example, by any suitable system, environment, software, andhardware, or a combination of systems, environments, software, andhardware, as appropriate. For example, a system comprising acommunications module, at least one memory storing instructions andother required data, and at least one hardware processor interoperablycoupled to the at least one memory and the communications module can beused to execute method 300. In some implementations, the method 300 andrelated methods are executed by one or more components of the system 100described above with respect to FIG. 1.

At 305, at least one satisfied notification rule for triggering anotification to user devices associated with at least one user profileis identified. The satisfied notification rule may be based on actionsperformed by users associated with the at least one user profile, or thenotification rule may be triggered and satisfied by the sending entityassociated with the notification rule. The satisfied notification ruleor rules can result in a triggered notification corresponding to thesatisfied notification rule to be sent, pushed, or otherwise transmittedto user devices associated with each of the user profiles for which thenotification rule is satisfied. Without the present solution, inresponse to the satisfied notification rule, a notification associatedwith rule is triggered and sent to user devices associated with each ofthe at least one user profiles.

In the present example solution described in FIG. 3, however, one ormore user-specific contextual rules are evaluated for each user profileassociated with a satisfied notification rule. In doing so, theindividual context of particular user and their user profiles can beconsidered prior to the sending of the particular notificationassociated with the satisfied notification rule. Therefore, theoperations described within 307 can be performed for each of theprofiles associated with the triggered notifications, where some of thetriggered notifications may be transmitted as originally planned, whileothers may be modified (e.g., delayed, cancelled, changed) based on theuser-specific contextual rules.

At 310, a particular user profile can be accessed to identify at leastone user-specific contextual rule to be considered for any triggerednotifications associated with the particular user profile. In someinstances, the user-specific contextual rules can be stored as part ofthe user profile (e.g., as a part of user- or admin-definedpreferences), while in other instances the rules may be available apartfrom any stored user profile information. If available, theuser-specific contextual rules are accessed. In some instances, theuser-specific contextual rules (as well as the relative usercontext-specific rules and the location-specific context rule) may becomputed, determined, or otherwise modified via a feedback loopmeasuring response rates for particular identified contexts. Machinelearning methods can be used, where the dependent variable in someinstances may be taken as a response from the user as a read receipt orsome other proxy related to user interaction with the transmittednotifications to identify that the user has had some response (positiveor negative) to the notification. If such rules are not available, thetriggered notification can be transmitted for the user profile.

At 315, a current context associated with the particular profile isidentified. The current context of the particular user profile caninclude a current location associated with the user profile, which maybe based on or determined from location information provided by a userdevice associated with the user profile (e.g., a smartphone), locationinformation derived from information available from the user device(e.g., available Wi-Fi networks associated with a particular location),one or more transactions associated with the user profile (e.g., apurchase or other non-financial transaction, where a location isassociated with the transaction or can otherwise be derived),information from a social network defining a particular location of theuser (e.g., a social network check-in), or known patterns of a user'slocation (e.g., an expected location based on historical userinformation). The current context may also or alternatively include acurrent local time associated with the user profile, recent activityassociated with the user profile (e.g., one or more transactions,agnostic of location), prior communication activities performed by theuser device (e.g., texts, messaging platform interactions), socialnetwork posts, and other information associated specifically with theuser profile. In some instances, the user-specific contextual rule mayalso be based on historical account information associated with the userprofile. An example rule may include a maximum number of notificationsto be sent to the user device or devices associated with the particularuser profile over a predetermined period of time. Using historicalaccount information related to the prior notifications, theuser-specific contextual rule can be based on whether priornotifications transmitted to devices associated with the particular userprofile exceed the maximum number. The maximum number of notificationsmay differ by user profile, where different user profiles have differentmaximum numbers. If the maximum number of prior notifications is met,the rule may be considered satisfied.

At 320, a determination is made as to whether the current context of theparticular user profile satisfied at least one user-specific contextualrule. As noted, the user-specific contextual rules can be based on anynumber of factors or preferences of the user, as well as automaticallydetermined preferences implicitly determined and implemented based on ananalysis of the activities and actions of the particular user profile.For example, the system may allow users to define specific blackoutperiods and/or time ranges where no communications should be sent (e.g.,during a particular period of expected sleep in the evenings/night,during periods conflicting with calendar events/meetings associated withthe particular user profile, etc.). Alternatively, specific locations(e.g., at a user's place of business) may be specifically defined inassociation with the particular user profile, such that a determinedcontext of the particular user profile matching those specificcontextual parameters will result in any triggered notifications beingmodified in accordance with the corresponding user-specific contextualrule. The modifications may include a cancellation of the triggerednotification, a delay of the triggered notification (e.g., until thecontext of the particular user profile no longer matches the specificcontextual parameters of the user-specific rule), or a modification tothe contents of a particular triggered notification.

In response to determining that the current context of the particularuser profile does not satisfy the user-specific contextual rule, method300 continues at 325 where a first signal including the triggerednotification is transmitted, via a communications module, to one or moreuser devices associated with the particular user profile for which theanalysis of 307 is performed.

If, however, the current context of the particular user profile doessatisfy at least one user-specific contextual rule, then method 300continues to 330, where the triggered modification is modified based onthe particular modification or modifications associated with thesatisfied user-specific contextual rule. Three example operations may beperformed to modify the notification, including cancelling the triggerednotification (330 a), delaying transmission of the triggerednotification (330 b), or modifying the contents of the triggerednotification (330 c). Cancelling the triggered notification 330 a mayinclude suppressing the triggered notification or otherwise stopping thetransmission of the notification to the user devices associated with theparticular user profile. In some instances, a notification of thecancellation may be provided to the entity sending the notification,where appropriate.

Delaying transmission of the triggered notification (330 b) may cause adelay to be implemented in sending the notification. In some instances,the triggered notification may be sent after a predetermined period oftime from the initial determination. In other instances, user-specifictiming may be appropriate, such as delaying the transmission for auser-specific time period until that user is likely to be outside of thecurrent context (whether location, timing, or other factor).Alternatively, the notification may be delayed and the triggerednotification reevaluated (e.g., at 320) after a period of time based ona re-determined current context of the particular user profile after thedelay. The determination as to whether a particular user-specificcontextual rule remains satisfied can be made again at the later time toidentify whether the notification should be sent. Modifying the contentsof the triggered notification (330 c) can be performed based on themodification rules, and can include determining a particular user deviceto be sent the transmission, a modification to the contents of thetransmission to include additional or less information, or any othersuitable change.

At 335, a second signal including the modified notification can betransmitted, via the communications module, to one or more user devicesassociated with the particular user profile. In instances where thetriggered notification is cancelled, no such transmission may be sentand method 300 can conclude for the particular user profile. Ininstances where the triggered notification is delayed or the contentsmodified, the delayed or content-modified notification can be sent at335.

The operations of 307 are performed individually for each particularuser profile associated with the triggered notification. Thedetermination of the user-specific contextual rules can be unique to theparticular user profile under consideration. In some instances, theoperations can be performed in parallel and/or concurrently for eachparticular user profile. In other instances, the analysis can beperformed sequentially, as needed.

FIG. 4 is a flowchart of an example method 400 for modifying triggerednotifications based on an evaluation of one or more contextual rulesanalyzing a particular user profile relative to at least one other userprofile. It will be understood that method 400 and related methods maybe performed, for example, by any suitable system, environment,software, and hardware, or a combination of systems, environments,software, and hardware, as appropriate. For example, a system comprisinga communications module, at least one memory storing instructions andother required data, and at least one hardware processor interoperablycoupled to the at least one memory and the communications module can beused to execute method 400. In some implementations, the method 400 andrelated methods are executed by one or more components of the system 100described above with respect to FIG. 1.

At 405, at least one satisfied notification rule for triggering anotification to user devices associated with at least one user profileis identified. The operation of 405 may be similar to the operations of305 described in FIG. 3.

In the present example solution described in FIG. 4, however, one ormore relative user context-specific rules are evaluated at 410 based onrelative current contexts of two or more user profiles prior to thesending of the particular notification associated with the satisfiednotification rule. In order to perform the relative analysis, a set ofrelative user context-specific rules for modifications to triggerednotifications are accessed to determine what factors and considerationsare to be made prior to triggering the notifications. In some instances,the relative user context-specific rules may be considered or applied toa group of users at one time, or, alternatively, the rules may beapplied against a first user profile in consideration of that first userprofile relative to one or more other user profiles.

At 415, a current context associated with each of the at least oneparticular user profiles associated with the triggered notification isidentified. In some instances, a further set of information regardingone or more additional user profiles may be obtained, such as wherethose other additional user profiles are associated with a location ator near one or more of the user devices of the particular user profilesassociated with the triggered notification. The current contexts may besimilar to or different those described in connection with FIG. 3.

For each user profile associated with the triggered notifications, ananalysis may be performed encompassed by 417, where the specific contextof the particular user profile is then compared to and evaluated againstthe one or more other particular user profiles' current contexts.

At 420, a relative user context can be identified for a particular userprofile based on the current context of the particular user profile andat least some of the user profiles different than the particular userprofile. In some instances, the relative user context may provideinformation identifying a number of user profiles within the samelocation as or a particular distance from the particular user profile.In other instances, a relative number of notifications provided todifferent user profiles over time may be considered, as well as a levelof user interaction from one or more users to whom prior notificationshave been transmitted in a similar context or location as the currentrelative context. In general, the relative user context provides a viewof the particular user profile in comparison to one or more otherprofiles, where the relative user context can be used as a baseline orbasis for evaluation against one or more relative user context-specificrules.

At 425, a determination is made as to whether the current relativecontext satisfies at least one relative user context-specific rule. Therelative user context-specific rules can define any suitable rules thatapplies a comparison of different user profile contexts to each other todetermine whether one or more relative parameters are met. For example,an example relative user context-specific rule may define that when afirst number of user profiles are associated with the same commonlocation in their identified current contexts, then any triggerednotifications should be modified. The common location may be specific toa particular location (e.g., a store, a business, an event hall, etc.),or the common location may be a common location relative to one another(e.g., location-agnostic, but within a predetermined ordynamically-determined distance from one another (e.g., within a 200foot diameter from each other)). If the number of user profilesassociated with the common location exceeds the first number of userprofiles, then the rule is satisfied. In some instances, the relativeuser context-specific rule may be specific to a particular user profile,in that the determination identifies whether a relative user contextfrom the view of the particular user profile satisfies the particularrelative user context-specific rule being evaluated. However, one ormore of the other user profiles may not be associated with such a rule,such that notifications to those users may be sent if no othermodification rules are met. Still further, in some instances, if thecombined relative user context satisfies a particular relative usercontext-specific rule, then corresponding modifications mayautomatically be made for those user profiles. In some instances, therelative user context may include information about non-registered userprofiles where able. For example, in a location-related relative usercontext-specific rule, a particular number of persons within an area orlocation may be determinable via outside or external data orinformation. The relative user context-specific rule may specifyabsolute numbers in the location as compared to a number of registeredusers. Alternatively, the relative user context-specific rule may bebased on an absolute number, where particular user profiles beingassociated with a location may be used as a proxy for a total number ofpersons being at the location. That is, if 10 user profiles arecurrently located at or associated with a location, then an estimate fora particular time of day may indicate that 100 total people are at thelocation based on market share or percentage of the populationregistered, for example.

If it is determined that none of the at least one relative usercontext-specific rules are met, method 400 continues at 430, where afirst signal including the triggered notification is transmitted, via acommunications module, to a user device associated with the particularuser profile. If, however, at least one relative user context-specificrule is satisfied based on the current relative user context, thenmethod 400 continues at 435. Depending on the modifications specific tothe satisfied rule, at 435 the triggered notification for the particularuser may be cancelled (435 a), delayed (435 b), or the contents thereofcan be modified (435 c). The operations of 435 and 435 a-c may besimilar to or different than those of 330 and 330 a-c of FIG. 3. At 440,a second signal including the modified notification can be transmitted,via the communications module, to one or more user devices associatedwith the particular user profile (where appropriate). In instances wherethe triggered notification is cancelled, no such transmission may besent and method 400 can conclude for the particular user profile. Ininstances where the triggered notification is delayed or the contentsmodified, the delayed or content-modified notification can be sent at440.

In some instances, the operations of 417 are performed individually foreach particular user profile associated with the triggered notification.The determination of the relative user context-specific rules can beunique to the particular user profile under consideration. In otherinstances, a group of user profiles associated with a similar or relatedcontext can be considered together, with the modifications being appliedto the triggered notifications associated with each member of the group.

In some instances, the modification operations may be used to cancel ordelay triggered notifications for only some of the user profilesassociated with a group of contextually-related user profiles. Forexample, a subset of the user profiles associated with a common locationmay be identified to still receive the triggered notification, whileothers outside that subset, but still at the common location, may havetheir notifications cancelled or delayed. In such instances, thetriggered notifications may be sent to the user devices of those userprofiles included in the subset even though they originally satisfy therelative user context-specific rule.

In some instances, the relative user context-specific rule may be basedon the set of user profiles who are associated with a similar or commontriggered notification. In those instances, the relative usercontext-specific rule may identify a maximum number of user profilesallowed to receive a particular triggered notification. The rule may bein effect to limit costs of sending the notification, or to avoid oversending said notification. In any event, a subset of those user profilesassociated with the triggered notification can be pruned or otherwisenarrowed in order to meet those requirements of the rule. Once narrowed,the triggered notification can be sent to the appropriate user profiles(via their devices), while the notifications for the non-receiving userprofiles can be cancelled.

FIG. 5 is a flowchart of an example method 500 for modifying triggerednotifications associated with particular users based on an evaluation ofone or more location-specific contextual rules. It will be understoodthat method 500 and related methods may be performed, for example, byany suitable system, environment, software, and hardware, or acombination of systems, environments, software, and hardware, asappropriate. For example, a system comprising a communications module,at least one memory storing instructions and other required data, and atleast one hardware processor interoperably coupled to the at least onememory and the communications module can be used to execute method 500.In some implementations, the method 500 and related methods are executedby one or more components of the system 100 described above with respectto FIG. 1.

At 505, at least one satisfied notification rule for triggering anotification to user devices associated with at least one user profileis identified. The operation of 505 may be similar to the operations of305 described in FIGS. 3 and 405 described in FIG. 4.

At 510, a set of location-specific rules associated with modificationsto one or more triggered notifications is identified. Thelocation-specific rules are used to associate specific rules andnotification behavior to specific locations. Examples of such locationsthat may be associated with a location-specific rule may include placesof worship, hospitals, office buildings, a particular business entity,courthouses, governmental buildings, stadiums and other sporting orrecreational event locations, theaters, schools, and others. In someinstances, the location-specific rule may be specifically associatedwith both a location and a particular event occurring at the location,such that the location-specific rule can only be satisfied while theparticular event or events are occurring. For example, triggerednotifications may be suppressed when they are triggered while an eventis actually occurring at the location, such as a play, a game, oranother event. Information about when those events are occurring may beknown or may follow a predetermined schedule or the ongoing occurrenceor current status of the event may be dynamically determined. Both thepredetermined schedule and the ongoing occurrence or current status maybe known based on one or more social network or alternative feeds, suchas a sporting event data feeds, an available schedule including runtimesand/or event timelines (e.g., from a movie theater calendar, playbill,etc.), or based on social network feeds (e.g., after-show posts orcomments regarding the event, as well as social network posting velocityat or around an expected end time). For purposes of thelocation-specific rules described in FIG. 5, the location of associatedwith a particular user profile (e.g., based on the location of a userdevice associated with the particular user profile) is the primary and,in some cases, sole determination of whether the location-specific ruleis satisfied.

For each user profile associated with the triggered notification, ananalysis may be performed (encompassed by 512), where the specificcontext of the particular user profile is then compared to the specificlocation or locations identified and associated with thelocation-specific rule. In some instances, but not illustratedspecifically in FIG. 5, a specific location rule may be included orconsidered in combination with one or more user-specific contextualrules and/or one or more relative user context-specific rules, whereappropriate.

At 515, a current context associated with a particular user profile isidentified, where the current context of the particular user profile isassociated with a particular location. The particular location may bedetermined based on information received from a user device associatedwith the particular user profile (e.g., GPS or aGPS data, or derivedinformation based on a set of contextual parameters detected by the userdevice), a calendar identifying the expected location of the personassociated with the particular user profile at a particular time,particular transactional information identifying a location (e.g.,purchase or financial transaction data, connection to a particularnetwork, interaction with one or more systems, etc.), or other suitableinformation capable of being used to identify a particular locationassociated with the particular user profile.

At 520, a determination is made as to whether the current context andthe associated location satisfy at least one location-specific rule. Asnoted, location-specific rules may be associated with a valid time range(e.g., predetermined or dynamically determined). Evaluating whether thecurrent context of the particular user profile satisfies the at leastone location-specific rule can be based on a combination of comparisonsto determine which location-specific rules are active and which of thoseactive rules are then satisfied.

If it is determined that none of the at least one location-specificrules are met, method 500 continues at 525, where a first signalincluding the triggered notification is transmitted, via acommunications module, to a user device associated with the particularuser profile. If, however, at least one location-specific rule issatisfied, based on the current user context, then method 500 continuesat 530. Depending on the modifications specific to the satisfiedlocation-specific rule, at 530 the triggered notification for theparticular user may be cancelled (530 a), delayed (530 b), or thecontents thereof can be modified (530 c). The operations of 530 and 530a-c may be similar to or different from those of 330 and 330 a-c ofFIGS. 3 and 435 and 435 a-c of FIG. 4.

At 535, a second signal including the modified notification can betransmitted, via the communications module, to one or more user devicesassociated with the particular user profile (where appropriate). Ininstances where the triggered notification is cancelled, no suchtransmission may be sent and method 500 can conclude for the particularuser profile. In instances where the triggered notification is delayedor the contents modified, the delayed or content-modified notificationcan be sent at 535.

In some instances, the delay of 530 b may be of a predetermined time. Inother instances, the delay of 530 b may be for a dynamically determinedperiod of time while the current context of the user profiles remains ator associated with the particular location, or alternatively, while theevent at the location continues. In some instances, delayednotifications may be transmitted in response to a determination ortiming of an intermission, either based on the location being changed(e.g., exiting the theater during the middle of a scheduled performance)or based on a known break. In still other instances, local feeds fromthe location of the event or from a sponsor, broadcaster, or otherentity associated with the event may provide information about thecurrent status of the event (e.g., play-by-play indicating the end of aninning, or other temporary stoppage in play). In those instances, at 540the system may receive information associated with or indicating achange of location for the user profile from the specific locationassociated with the location-specific rule, or information indicating ordetermining that the event at the location is over. In some instances, apredetermined time from the initial delay action may have expired aswell. Once the information is received or the delay expires, at 545 thedelayed notification is transmitted to a user device associated with theparticular user profile.

In FIGS. 3, 4, and 5, the user-specific rules, the relative user contextrules, and the location-specific rules are described as separate anddistinct rule sets. However, one or more of the different rules can becombined or applied together in some instances, or may be combined intoa single combined modification rule. The combination of the rules, or asequentially combined set of rules (e.g., in a particular relative usercontext, apply a location-specific rule) may be created and applied.

The preceding figures and accompanying description illustrate exampleprocesses and computer-implementable techniques. But system 100 (or itssoftware or other components) contemplates using, implementing, orexecuting any suitable technique for performing these and other tasks.It will be understood that these processes are for illustration purposesonly and that the described or similar techniques may be performed atany appropriate time, including concurrently, individually, or incombination. In addition, many of the operations in these processes maytake place simultaneously, concurrently, and/or in different orders thanas shown. Moreover, the described systems and flows may use processesand/or components with or performing additional operations, feweroperations, and/or different operations, so long as the methods andsystems remain appropriate.

In other words, although this disclosure has been described in terms ofcertain embodiments and generally associated methods, alterations andpermutations of these embodiments and methods will be apparent to thoseskilled in the art. Accordingly, the above description of exampleembodiments does not define or constrain this disclosure. Other changes,substitutions, and alterations are also possible without departing fromthe spirit and scope of this disclosure.

What is claimed is:
 1. A system comprising: a communications module; atleast one memory storing instructions, a plurality of user profiles,each user profile associated with a user device, a repository ofnotification rules including at least one rule set identifying eventsfor triggering notifications to user devices associated with particularones of the user profiles based on a set of notification requirements,and a repository of notification modification rules identifyingcontextual determinations associated with the particular ones of theuser profiles related to the triggered notification, where thenotification modification rules identify a particular modification tothe triggered notification prior to transmission of the triggerednotification, wherein at least one notification modification ruleidentifies modifications to triggered notifications based on a userprofile-specific contextual rule; and at least one hardware processorinteroperably coupled with the at least one memory and thecommunications module, wherein the instructions instruct the at leastone hardware processor to: identify at least one satisfied notificationrule for triggering notifications to a user device associated with atleast one particular user profile; for each of the at least oneparticular user profiles: access the particular user profile to identifyat least one user-specific contextual rule corresponding to the at leastone notification modification rules; identify a current user contextassociated with the particular user profile; in response to determiningthat the identified current user context associated with the particularuser profile satisfies the at least one user-specific contextual rulebefore the notification is transmitted, modify the triggerednotification for the particular user profile based on the particularmodification associated with the satisfied at least one user-specificcontextual rule; and in response to determining that the identifiedcurrent user context associated with the particular user profile doesnot satisfy the at least one user-specific contextual rule, transmit,via the communications module, a first signal to the user deviceassociated with the particular user profile, the first signal includingthe triggered notification.
 2. The system of claim 1, wherein modifyingthe triggered notification for the particular user profile comprisescancelling the triggered notification prior to transmission.
 3. Thesystem of claim 1, wherein modifying the triggered notification for theparticular user profile comprises modifying contents of the triggerednotification prior to transmitting the triggered notification.
 4. Thesystem of claim 1, the instructions further instructing the at least onehardware processor to, in response to modifying the triggerednotification for the particular user profile, transmit, via thecommunications module, a second signal to the user device associatedwith the particular user profile, the second signal including themodified notification.
 5. The system of claim 1, wherein theuser-specific contextual rule set includes at least onelocation-specific rule, wherein the user-specific contextual rule issatisfied when the user device associated with the user profile isdetermined to be at a location associated with the at least onelocation-specific rule.
 6. The system of claim 5, wherein modifying thetriggered notification for the particular user profile comprisesdelaying transmission of the triggered notification until the userdevice associated with the user profile is determined to be at alocation not including the locations associated with the at least onelocation-specific rule.
 7. The system of claim 5, wherein modifying thetriggered notification for the particular user profile comprisescancelling the triggered notification without transmission in responseto determining that the user device associated with the user profile tobe a location associated with the at least one location-specific rule.8. The system of claim 1, wherein the user-specific contextual rule setincludes at least one time-specific rule defining a time in which theuser profile is not to receive notification, wherein the at least onetime-specific rule is satisfied when the triggered notification istriggered at a time corresponding to a particular time or time rangeassociated with the time-specific rule associated with the user-specificcontextual rule set.
 9. The system of claim 1, wherein the user-specificcontextual rule set includes a rule defining a maximum number ofnotifications received over a period of time.
 10. The system of claim 9,wherein determining that the identified current user context associatedwith the particular user profile satisfies the rule associated with anumber of notification received over a period of time comprisesanalyzing historical data associated with the particular user profile todetermine whether the user device has received a number of notificationsequal to or greater than the maximum number of notifications over theperiod of time.
 11. The system of claim 10, wherein modifying thetriggered notification for the particular user profile, in response todetermining that the user device has received the number ofnotifications equal to or greater than the maximum number ofnotifications over the defined period of time, comprises cancelling thetriggered notification without transmission.
 12. The system of claim 10,wherein modifying the triggered notification for the particular userprofile, in response to determining that the user device has receivedthe number of notifications equal to or greater than the maximum numberof notifications over the defined period of time, comprises delayingtransmission of the triggered notification until after the definedperiod of time has expired.
 13. The system of claim 1, whereinidentifying the current user context associated with the particular userprofile comprises receiving, via the communications module, a thirdsignal from the user device associated with the particular user profile.14. The system of claim 1, wherein identifying the current user contextassociated with the particular user profile comprises receiving, via thecommunications module, a third signal from an external source differentthan the user device, the external source providing information relatedto the user associated with the particular user profile.
 15. The systemof claim 1, wherein the triggered notification comprises a pushnotification associated with a particular application installed on theuser device associated with the particular user profile.
 16. The systemof claim 1, wherein the user-specific contextual rule set includes arule to suppress triggered notifications based on an analysis of atransactional history associated with the particular user profile, wherethe rule is satisfied in response to a determination that the particularuser profile is associated with a transaction within a period of timeprior to a triggering of the triggered notification.
 17. Anon-transitory, computer-readable medium storing computer-readableinstructions executable by a computer, a plurality of user profiles,each user profile associated with a user device, a repository ofnotification rules including at least one rule set identifying eventsfor triggering notifications to user devices associated with particularones of the user profiles based on a set of notification requirements,and a repository of notification modification rules identifyingcontextual determinations associated with the particular ones of theuser profiles related to the triggered notification, where thenotification modification rules identify a particular modification tothe triggered notification prior to transmission of the triggerednotification, wherein at least one notification modification ruleidentifies modifications to triggered notifications based on a userprofile-specific contextual rule, the computer-readable instructionsconfigured to: identify at least one satisfied notification rule fortriggering notifications to a user device associated with at least oneparticular user profile; for each of the at least one particular userprofiles: access the particular user profile to identify at least oneuser-specific contextual rule corresponding to the at least onenotification modification rules; identify a current user contextassociated with the particular user profile; in response to determiningthat the identified current user context associated with the particularuser profile satisfies the at least one user-specific contextual rulebefore the notification is transmitted, modify the triggerednotification for the particular user profile based on the particularmodification associated with the satisfied at least one user-specificcontextual rule; and in response to determining that the identifiedcurrent user context associated with the particular user profile doesnot satisfy the at least one user-specific contextual rule, transmit,via the communications module, a first signal to the user deviceassociated with the particular user profile, the first signal includingthe triggered notification.
 18. The computer-readable medium of claim17, wherein the user-specific contextual rule set includes at least onelocation-specific rule, wherein the user-specific contextual rule issatisfied when the user device associated with the user profile isdetermined to be at a location associated with the at least onelocation-specific rule, and wherein modifying the triggered notificationfor the particular user profile comprises delaying transmission of thetriggered notification until the user device associated with the userprofile is determined to be at a location not including the locationsassociated with the at least one location-specific rule.
 19. Acomputerized method performed by one or more processors, the methodcomprising: identifying at least one satisfied notification rule from aplurality of notification rules for triggering notifications to a userdevice associated with at least one particular user profile from aplurality of user profiles, each user profile associated with a userdevice, the notification rules including at least one rule setidentifying events for triggering notifications to user devicesassociated with particular ones of the user profiles based on a set ofnotification requirements; for each of the at least one particular userprofiles: accessing the particular user profile to identify at least oneuser-specific contextual rule corresponding to at least one notificationmodification rule from a set of notification modification rules, thenotification modification rules identifying contextual determinationsassociated with particular ones of the user profiles related to thetriggered notification, where the notification modification rulesidentify a particular modification to the triggered notification priorto transmission of the triggered notification, wherein at least onenotification modification rule identifies modifications to triggerednotifications based on a user profile-specific contextual rule;identifying a current user context associated with the particular userprofile; in response to determining that the identified current usercontext associated with the particular user profile satisfies the atleast one user-specific contextual rule before the notification istransmitted, modifying the triggered notification for the particularuser profile based on the particular modification associated with thesatisfied at least one user-specific contextual rule; and in response todetermining that the identified current user context associated with theparticular user profile does not satisfy the at least one user-specificcontextual rule, transmitting, via a communications module, a firstsignal to the user device associated with the particular user profile,the first signal including the triggered notification.
 20. The method ofclaim 19, wherein the user-specific contextual rule set includes atleast one time-specific rule defining a time in which the user profileis not to receive notification, wherein the at least one time-specificrule is satisfied when the triggered notification is triggered at a timecorresponding to a particular time or time range associated with thetime-specific rule associated with the user-specific contextual ruleset.